ãã®è©³çްã¬ã€ãã§JavaScriptãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®åãè§£ãæŸã¡ãŸããããWebpackãRollupãesbuildãªã©ã®äººæ°ãã«ãããŒã«ãšã·ãŒã ã¬ã¹ã«çµ±åããã³ãŒãã®ã¢ãžã¥ãŒã«æ§ãšããã©ãŒãã³ã¹ãåäžãããæ¹æ³ãåŠã³ãŸãã
JavaScriptãœãŒã¹ãã§ãŒãºã€ã³ããŒãïŒãã«ãããŒã«çµ±åã®ããã®ç·åã¬ã€ã
JavaScriptã®ã¢ãžã¥ãŒã«ã·ã¹ãã ã¯ãCommonJSãAMDãããçŸåšæšæºãšãªã£ãŠããESã¢ãžã¥ãŒã«ãŸã§ãé·å¹Žã«ããã£ãŠå€§ããé²åããŠããŸããããœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ãããªãé²å圢ã§ãããã¢ãžã¥ãŒã«ã®ããŒããšåŠçã®æ¹æ³ã«é¢ããŠãããé«ãæè»æ§ãšå¶åŸ¡æ§ãæäŸããŸãããã®èšäºã§ã¯ããœãŒã¹ãã§ãŒãºã€ã³ããŒãã®äžçãæ·±ãæãäžãããããäœã§ãããããã®å©ç¹ããããŠWebpackãRollupãesbuildãšãã£ã人æ°ã®JavaScriptãã«ãããŒã«ãšå¹æçã«çµ±åããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ãœãŒã¹ãã§ãŒãºã€ã³ããŒããšã¯äœãïŒ
åŸæ¥ã®JavaScriptã¢ãžã¥ãŒã«ã¯å®è¡æã«ããŒããããå®è¡ãããŸããäžæ¹ããœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ãå®è¡æåã«ã€ã³ããŒãããã»ã¹ãæäœããã¡ã«ããºã ãæäŸããŸããããã«ãããæšæºã®ã©ã³ã¿ã€ã ã€ã³ããŒãã§ã¯äžå¯èœãªåŒ·åãªæé©åã倿ãå¯èœã«ãªããŸãã
ã€ã³ããŒããããã³ãŒããçŽæ¥å®è¡ãã代ããã«ããœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ã€ã³ããŒãã°ã©ããæ€æ»ããã³å€æŽããããã®ããã¯ãšAPIãæäŸããŸããããã«ãããéçºè ã¯ä»¥äžã®ããšãå¯èœã«ãªããŸãïŒ
- ã¢ãžã¥ãŒã«æå®åãåçã«è§£æ±ºããïŒ ç°å¢å€æ°ããŠãŒã¶ãŒã®å¥œã¿ããŸãã¯ãã®ä»ã®æèçèŠå ã«åºã¥ããŠãã©ã®ã¢ãžã¥ãŒã«ãããŒãããããæ±ºå®ããŸãã
- ã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒãã倿ããïŒ ã³ãŒããå®è¡ãããåã«ããã©ã³ã¹ãã€ã«ããããã£ã±ãŒã·ã§ã³ããŸãã¯åœéåãªã©ã®å€æãé©çšããŸãã
- ã«ã¹ã¿ã ã¢ãžã¥ãŒã«ããŒããŒãå®è£ ããïŒ ããŒã¿ããŒã¹ããªã¢ãŒãAPIããŸãã¯ä»®æ³ãã¡ã€ã«ã·ã¹ãã ãªã©ãéæšæºã®ãœãŒã¹ããã¢ãžã¥ãŒã«ãããŒãããŸãã
- ã¢ãžã¥ãŒã«ã®ããŒããæé©åããïŒ ããã©ãŒãã³ã¹ãåäžãããããã«ãã¢ãžã¥ãŒã«ããŒãã®é åºãšã¿ã€ãã³ã°ãå¶åŸ¡ããŸãã
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ãããèªäœãæ°ããã¢ãžã¥ãŒã«åœ¢åŒãšããããã§ã¯ãããŸãããããããæ¢åã®ã¢ãžã¥ãŒã«ã·ã¹ãã å ã§ã¢ãžã¥ãŒã«ã®è§£æ±ºãšããŒãã®ããã»ã¹ãã«ã¹ã¿ãã€ãºããããã®åŒ·åãªãã¬ãŒã ã¯ãŒã¯ãæäŸãããã®ã§ãã
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®å©ç¹
ãœãŒã¹ãã§ãŒãºã€ã³ããŒããå®è£ ãããšãJavaScriptãããžã§ã¯ãã«ããã€ãã®å€§ããªå©ç¹ãããããããšãã§ããŸãïŒ
- ã³ãŒãã®ã¢ãžã¥ãŒã«æ§ã®åäžïŒ ã¢ãžã¥ãŒã«æå®åãåçã«è§£æ±ºããããšã§ãããã¢ãžã¥ãŒã«æ§ãé«ããé©å¿æ§ã®ããã³ãŒãããŒã¹ãäœæã§ããŸããäŸãã°ããŠãŒã¶ãŒã®ãã±ãŒã«ãããã€ã¹ã®èœåã«åºã¥ããŠç°ãªãã¢ãžã¥ãŒã«ãããŒãããããšãã§ããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒ ãããã£ã±ãŒã·ã§ã³ãããªãŒã·ã§ã€ãã³ã°ãªã©ã®ãœãŒã¹ãã§ãŒãºå€æã«ããããã³ãã«ã®ãµã€ãºãå€§å¹ ã«åæžããããŒãæéãæ¹åã§ããŸããã¢ãžã¥ãŒã«ããŒãã®é åºãå¶åŸ¡ããããšããèµ·åããã©ãŒãã³ã¹ã®æé©åã«ã€ãªãããŸãã
- æè»æ§ã®åäžïŒ ã«ã¹ã¿ã ã¢ãžã¥ãŒã«ããŒããŒã䜿çšãããšãããåºç¯ãªããŒã¿ãœãŒã¹ãAPIãšçµ±åã§ããŸããããã¯ãããã¯ãšã³ãã·ã¹ãã ãå€éšãµãŒãã¹ãšé£æºããå¿ èŠããããããžã§ã¯ãã«ãšã£ãŠç¹ã«æçšã§ãã
- ç°å¢åºæã®èšå®ïŒ ç°å¢å€æ°ã«åºã¥ããŠã¢ãžã¥ãŒã«æå®åãåçã«è§£æ±ºããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®åäœãç°ãªãç°å¢ïŒéçºãã¹ããŒãžã³ã°ãæ¬çªïŒã«ç°¡åã«é©å¿ãããããšãã§ããŸããããã«ãããè€æ°ã®ãã«ãèšå®ãäžèŠã«ãªããŸãã
- A/Bãã¹ãïŒ ãŠãŒã¶ãŒã°ã«ãŒãã«åºã¥ããŠç°ãªãããŒãžã§ã³ã®ã¢ãžã¥ãŒã«ãåçã«ã€ã³ããŒãããããšã§ãA/Bãã¹ãæŠç¥ãå®è£ ã§ããŸããããã«ããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®å®éšãšæé©åãå¯èœã«ãªããŸãã
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®èª²é¡
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯å€ãã®å©ç¹ãæäŸããŸãããããã€ãã®èª²é¡ãæç€ºããŸãïŒ
- è€éæ§ã®å¢å ïŒ ãœãŒã¹ãã§ãŒãºã€ã³ããŒããå®è£ ãããšããã«ãããã»ã¹ãè€éã«ãªããã¢ãžã¥ãŒã«ã®è§£æ±ºãšããŒãã«ã€ããŠããæ·±ãçè§£ãå¿ èŠã«ãªãå ŽåããããŸãã
- ãããã°ã®é£ããïŒ åçã«è§£æ±ºãŸãã¯å€æãããã¢ãžã¥ãŒã«ã®ãããã°ã¯ãæšæºã¢ãžã¥ãŒã«ã®ãããã°ãããå°é£ã«ãªãå¯èœæ§ããããŸããé©åãªããŒã«ãšãã®ã³ã°ãäžå¯æ¬ ã§ãã
- ãã«ãããŒã«ãžã®äŸåïŒ ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯éåžžããã«ãããŒã«ã®ãã©ã°ã€ã³ãã«ã¹ã¿ã ããŒããŒã«äŸåããŸããããã«ãããç¹å®ã®ãã«ãããŒã«ãžã®äŸåãçããããŒã«éã®åãæ¿ããå°é£ã«ãªãå¯èœæ§ããããŸãã
- åŠç¿æ²ç·ïŒ éçºè ã¯ããœãŒã¹ãã§ãŒãºã€ã³ããŒããå®è£ ããããã«ãéžæãããã«ãããŒã«ãæäŸããç¹å®ã®APIãšèšå®ãªãã·ã§ã³ãåŠã¶å¿ èŠããããŸãã
- éå°èšèšã®å¯èœæ§ïŒ ãããžã§ã¯ãã«ãšã£ãŠãœãŒã¹ãã§ãŒãºã€ã³ããŒããæ¬åœã«å¿ èŠãã©ãããæ éã«æ€èšããããšãéèŠã§ãããããã䜿ãããããšãäžå¿ èŠãªè€éãã«ã€ãªããå¯èœæ§ããããŸãã
ãã«ãããŒã«ãšã®ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®çµ±å
ããã€ãã®äººæ°ã®JavaScriptãã«ãããŒã«ã¯ããã©ã°ã€ã³ãã«ã¹ã¿ã ããŒããŒãéããŠãœãŒã¹ãã§ãŒãºã€ã³ããŒãããµããŒãããŠããŸããããã§ã¯ãWebpackãRollupãesbuildãšçµ±åããæ¹æ³ãæ¢ã£ãŠã¿ãŸãããã
Webpack
Webpackã¯åŒ·åã§é«åºŠã«èšå®å¯èœãªã¢ãžã¥ãŒã«ãã³ãã©ã§ããããŒããŒãšãã©ã°ã€ã³ãéããŠãœãŒã¹ãã§ãŒãºã€ã³ããŒãããµããŒãããŸããWebpackã®ããŒããŒã¡ã«ããºã ã䜿çšãããšããã«ãããã»ã¹äžã«åã ã®ã¢ãžã¥ãŒã«ã倿ã§ããŸãããã©ã°ã€ã³ã¯ãã«ãã©ã€ããµã€ã¯ã«ã®ããŸããŸãªæ®µéã«ããã¯ã§ããããè€éãªã«ã¹ã¿ãã€ãºãå¯èœã«ããŸãã
äŸïŒãœãŒã¹ã³ãŒã倿ã®ããã®WebpackããŒããŒã®äœ¿çš
äŸãã°ãã«ã¹ã¿ã ããŒããŒã䜿çšã㊠`__VERSION__` ã®ãã¹ãŠã®åºçŸç®æãã`package.json` ãã¡ã€ã«ããèªã¿åã£ãã¢ããªã±ãŒã·ã§ã³ã®çŸåšã®ããŒãžã§ã³ã«çœ®ãæããããšããŸãã以äžã®ããã«ããŠå®çŸã§ããŸãïŒ
- ã«ã¹ã¿ã ããŒããŒãäœæããïŒ
// webpack-version-loader.js
const { readFileSync } = require('fs');
const path = require('path');
module.exports = function(source) {
const packageJsonPath = path.resolve(__dirname, 'package.json');
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
const version = packageJson.version;
const modifiedSource = source.replace(/__VERSION__/g, version);
return modifiedSource;
};
- ããŒããŒã䜿çšããããã«Webpackãèšå®ããïŒ
// webpack.config.js
module.exports = {
// ... other configurations
module: {
rules: [
{
test: /\.js$/,
use: [
{
loader: path.resolve(__dirname, 'webpack-version-loader.js')
}
]
}
]
}
};
- ã³ãŒãã§ `__VERSION__` ãã¬ãŒã¹ãã«ããŒã䜿çšããïŒ
// my-module.js
console.log('Application Version:', __VERSION__);
Webpackããããžã§ã¯ãããã«ããããšã`webpack-version-loader.js` ããã¹ãŠã®JavaScriptãã¡ã€ã«ã«é©çšããã`__VERSION__` ã `package.json` ã®å®éã®ããŒãžã§ã³ã«çœ®ãæããããŸããããã¯ããã«ããã§ãŒãºäžã«ãœãŒã¹ã³ãŒã倿ãå®è¡ããããã«ããŒããŒã䜿çšããæ¹æ³ã®ç°¡åãªäŸã§ãã
äŸïŒåçã¢ãžã¥ãŒã«è§£æ±ºã®ããã®Webpackãã©ã°ã€ã³ã®äœ¿çš
Webpackãã©ã°ã€ã³ã¯ãç°å¢å€æ°ã«åºã¥ããŠã¢ãžã¥ãŒã«æå®åãåçã«è§£æ±ºãããªã©ãããè€éãªã¿ã¹ã¯ã«äœ¿çšã§ããŸããç°å¢ïŒéçºãã¹ããŒãžã³ã°ãæ¬çªïŒã«åºã¥ããŠç°ãªãèšå®ãã¡ã€ã«ãããŒããããã·ããªãªãèããŠã¿ãŸãããã
- ã«ã¹ã¿ã ãã©ã°ã€ã³ãäœæããïŒ
// webpack-environment-plugin.js
class EnvironmentPlugin {
constructor(options) {
this.options = options || {};
}
apply(compiler) {
compiler.hooks.normalModuleFactory.tap('EnvironmentPlugin', (factory) => {
factory.hooks.resolve.tapAsync('EnvironmentPlugin', (data, context, callback) => {
if (data.request === '@config') {
const environment = process.env.NODE_ENV || 'development';
const configPath = `./config/${environment}.js`;
data.request = path.resolve(__dirname, configPath);
}
callback(null, data);
});
});
}
}
module.exports = EnvironmentPlugin;
- ãã©ã°ã€ã³ã䜿çšããããã«Webpackãèšå®ããïŒ
// webpack.config.js
const EnvironmentPlugin = require('./webpack-environment-plugin.js');
const path = require('path');
module.exports = {
// ... other configurations
plugins: [
new EnvironmentPlugin()
],
resolve: {
alias: {
'@config': path.resolve(__dirname, 'config/development.js') // Default alias, might be overridden by the plugin
}
}
};
- ã³ãŒãã§ `@config` ãã€ã³ããŒãããïŒ
// my-module.js
import config from '@config';
console.log('Configuration:', config);
ãã®äŸã§ã¯ã`EnvironmentPlugin` ã `@config` ã®ã¢ãžã¥ãŒã«è§£æ±ºããã»ã¹ãã€ã³ã¿ãŒã»ããããŸãã`NODE_ENV` ç°å¢å€æ°ããã§ãã¯ããã¢ãžã¥ãŒã«ãé©åãªèšå®ãã¡ã€ã«ïŒäŸïŒ`config/development.js`ã`config/staging.js`ããŸã㯠`config/production.js`ïŒã«åçã«è§£æ±ºããŸããããã«ãããã³ãŒãã倿Žããããšãªããç°ãªãèšå®ãç°¡åã«åãæ¿ããããšãã§ããŸãã
Rollup
RollupããŸããé«åºŠã«æé©åããããã³ãã«ãçæããèœåã§ç¥ãããã人æ°ã®JavaScriptã¢ãžã¥ãŒã«ãã³ãã©ã§ããããããã©ã°ã€ã³ãéããŠãœãŒã¹ãã§ãŒãºã€ã³ããŒãããµããŒãããŸããRollupã®ãã©ã°ã€ã³ã·ã¹ãã ã¯ãã·ã³ãã«ã§æè»ã«èšèšãããŠãããããŸããŸãªæ¹æ³ã§ãã«ãããã»ã¹ãã«ã¹ã¿ãã€ãºã§ããŸãã
äŸïŒåçã€ã³ããŒãåŠçã®ããã®Rollupãã©ã°ã€ã³ã®äœ¿çš
ãŠãŒã¶ãŒã®ãã©ãŠã¶ã«åºã¥ããŠã¢ãžã¥ãŒã«ãåçã«ã€ã³ããŒãããå¿ èŠãããã·ããªãªãèããŠã¿ãŸããããããã¯Rollupãã©ã°ã€ã³ã䜿çšããŠå®çŸã§ããŸãã
- ã«ã¹ã¿ã ãã©ã°ã€ã³ãäœæããïŒ
// rollup-browser-plugin.js
import { browser } from 'webextension-polyfill';
export default function browserPlugin() {
return {
name: 'browser-plugin',
resolveId(source, importer) {
if (source === 'browser') {
return {
id: 'browser-polyfill',
moduleSideEffects: true, // Ensure polyfill is included
};
}
return null; // Let Rollup handle other imports
},
load(id) {
if (id === 'browser-polyfill') {
return `export default ${JSON.stringify(browser)};`;
}
return null;
},
};
}
- ãã©ã°ã€ã³ã䜿çšããããã«Rollupãèšå®ããïŒ
// rollup.config.js
import browserPlugin from './rollup-browser-plugin.js';
export default {
// ... other configurations
plugins: [
browserPlugin()
]
};
- ã³ãŒãã§ `browser` ãã€ã³ããŒãããïŒ
// my-module.js
import browser from 'browser';
console.log('Browser Info:', browser.name);
ãã®ãã©ã°ã€ã³ã¯ `browser` ã¢ãžã¥ãŒã«ã®ã€ã³ããŒããã€ã³ã¿ãŒã»ããããWebæ¡åŒµæ©èœAPIã®ããªãã£ã«ïŒå¿ èŠãªå ŽåïŒã«çœ®ãæããããšã§ãç°ãªããã©ãŠã¶éã§äžè²«ããã€ã³ã¿ãŒãã§ãŒã¹ã广çã«æäŸããŸããããã¯ãRollupãã©ã°ã€ã³ã䜿çšããŠåçã«ã€ã³ããŒããåŠçããã³ãŒããããŸããŸãªç°å¢ã«é©å¿ãããæ¹æ³ã瀺ããŠããŸãã
esbuild
esbuildã¯ããã®åè¶ããé床ã§ç¥ãããæ¯èŒçæ°ããJavaScriptãã³ãã©ã§ãããã®é床ã¯ãã³ã¢ãGoã§èšè¿°ãããã«ãããã»ã¹ã䞊ååãããªã©ã®æè¡ã®çµã¿åããã«ãã£ãŠéæãããŠããŸããesbuildã¯ãã©ã°ã€ã³ãéããŠãœãŒã¹ãã§ãŒãºã€ã³ããŒãããµããŒãããŠããŸããããã®ãã©ã°ã€ã³ã·ã¹ãã ã¯ãŸã é²åã®éäžã«ãããŸãã
äŸïŒç°å¢å€æ°çœ®æã®ããã®esbuildãã©ã°ã€ã³ã®äœ¿çš
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®äžè¬çãªäœ¿çšäŸã®1ã€ã¯ããã«ãããã»ã¹äžã«ç°å¢å€æ°ã眮ãæããããšã§ããesbuildãã©ã°ã€ã³ã䜿çšããŠãããè¡ãæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒ
- ã«ã¹ã¿ã ãã©ã°ã€ã³ãäœæããïŒ
// esbuild-env-plugin.js
const esbuild = require('esbuild');
function envPlugin(env) {
return {
name: 'env',
setup(build) {
build.onLoad({ filter: /\.js$/ }, async (args) => {
let contents = await fs.promises.readFile(args.path, 'utf8');
for (const k in env) {
contents = contents.replace(new RegExp(`process\.env\.${k}`, 'g'), JSON.stringify(env[k]));
}
return {
contents: contents,
loader: 'js',
};
});
},
};
}
module.exports = envPlugin;
- ãã©ã°ã€ã³ã䜿çšããããã«esbuildãèšå®ããïŒ
// build.js
const esbuild = require('esbuild');
const envPlugin = require('./esbuild-env-plugin.js');
const fs = require('fs');
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
plugins: [envPlugin(process.env)],
platform: 'browser',
format: 'esm',
}).catch(() => process.exit(1));
- ã³ãŒãã§ `process.env` ã䜿çšããïŒ
// src/index.js
console.log('Environment:', process.env.NODE_ENV);
console.log('API URL:', process.env.API_URL);
ãã®ãã©ã°ã€ã³ã¯ `process.env` ãªããžã§ã¯ãã§æäŸãããç°å¢å€æ°ãå埩åŠçãã`process.env.VARIABLE_NAME` ã®ãã¹ãŠã®åºçŸç®æã察å¿ããå€ã«çœ®ãæããŸããããã«ããããã«ãããã»ã¹äžã«ç°å¢åºæã®èšå®ãã³ãŒãã«æ³šå ¥ã§ããŸãã`fs.promises.readFile` ã¯ãã¡ã€ã«ã³ã³ãã³ããéåæã§èªã¿åãããããšãä¿èšŒããããã¯Node.jsã®æäœã«ããããã¹ããã©ã¯ãã£ã¹ã§ãã
é«åºŠãªäœ¿çšäŸãšèæ ®äºé
åºæ¬çãªäŸãè¶ ããŠããœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ããŸããŸãªé«åºŠãªäœ¿çšäŸã«å©çšã§ããŸãïŒ
- åœéå (i18n)ïŒ ãŠãŒã¶ãŒã®èšèªèšå®ã«åºã¥ããŠãã±ãŒã«åºæã®ã¢ãžã¥ãŒã«ãåçã«ããŒãããŸãã
- æ©èœãã©ã°ïŒ ç°å¢å€æ°ããŠãŒã¶ãŒã°ã«ãŒãã«åºã¥ããŠæ©èœãæå¹ãŸãã¯ç¡å¹ã«ããŸãã
- ã³ãŒãåå²ïŒ ãªã³ããã³ãã§ããŒããããå°ããªãã³ãã«ãäœæããåæããŒãæéãæ¹åããŸããåŸæ¥ã®ã³ãŒãåå²ã¯ã©ã³ã¿ã€ã ã®æé©åã§ããããœãŒã¹ãã§ãŒãºã€ã³ããŒãã«ããããã«ãæã«ãã詳现ãªå¶åŸ¡ãšåæãå¯èœã«ãªããŸãã
- ããªãã£ã«ïŒ ã¿ãŒã²ãããã©ãŠã¶ãç°å¢ã«åºã¥ããŠããªãã£ã«ãæ¡ä»¶ä»ãã§å«ããŸãã
- ã«ã¹ã¿ã ã¢ãžã¥ãŒã«åœ¢åŒïŒ JSONãYAMLãããã«ã¯ã«ã¹ã¿ã DSLãªã©ãéæšæºã®ã¢ãžã¥ãŒã«åœ¢åŒããµããŒãããŸãã
ãœãŒã¹ãã§ãŒãºã€ã³ããŒããå®è£ ããéã«ã¯ã以äžã®ç¹ãèæ ®ããããšãéèŠã§ãïŒ
- ããã©ãŒãã³ã¹ïŒ ãã«ãããã»ã¹ãé ãããå¯èœæ§ã®ããè€éãŸãã¯èšç®ã³ã¹ãã®é«ã倿ãé¿ããŸãã
- ä¿å®æ§ïŒ ã«ã¹ã¿ã ããŒããŒãšãã©ã°ã€ã³ãã·ã³ãã«ã§ååã«ææžåãããç¶æ ã«ä¿ã¡ãŸãã
- ãã¹ãå®¹ææ§ïŒ ãœãŒã¹ãã§ãŒãºå€æãæ£ããæ©èœããŠããããšã確èªããããã«åäœãã¹ããäœæããŸãã
- ã»ãã¥ãªãã£ïŒ ä¿¡é Œã§ããªããœãŒã¹ããã¢ãžã¥ãŒã«ãããŒãããéã¯æ³šæããŠãã ãããã»ãã¥ãªãã£äžã®è匱æ§ãåŒãèµ·ããå¯èœæ§ããããŸãã
- ãã«ãããŒã«ã®äºææ§ïŒ ãœãŒã¹ãã§ãŒãºå€æãã䜿çšããŠãããã«ãããŒã«ã®ç°ãªãããŒãžã§ã³ãšäºææ§ãããããšã確èªããŸãã
çµè«
ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã¯ãJavaScriptã¢ãžã¥ãŒã«ã®ããŒãããã»ã¹ãã«ã¹ã¿ãã€ãºããããã®åŒ·åã§æè»ãªæ¹æ³ãæäŸããŸããWebpackãRollupãesbuildãªã©ã®ãã«ãããŒã«ãšçµ±åããããšã§ãã³ãŒãã®ã¢ãžã¥ãŒã«æ§ãããã©ãŒãã³ã¹ãé©å¿æ§ãå€§å¹ ã«åäžãããããšãã§ããŸããå€å°ã®è€éãã¯äŒŽããŸãããé«åºŠãªã«ã¹ã¿ãã€ãºãæé©åãå¿ èŠãšãããããžã§ã¯ãã«ãšã£ãŠã¯ããã®å©ç¹ã¯éåžžã«å€§ãããã®ãšãªãåŸãŸãããããžã§ã¯ãã®èŠä»¶ãæ éã«æ€èšãããã«ãããã»ã¹ã«ãœãŒã¹ãã§ãŒãºã€ã³ããŒããçµ±åããããã®é©åãªã¢ãããŒããéžæããŠãã ãããã³ãŒãããŒã¹ã®å ç¢æ§ãšä¿¡é Œæ§ã確ä¿ããããã«ãä¿å®æ§ããã¹ãå®¹ææ§ãã»ãã¥ãªãã£ãåªå ããããšãå¿ããªãã§ãã ãããå®éšããæ¢æ±ããJavaScriptãããžã§ã¯ãã§ãœãŒã¹ãã§ãŒãºã€ã³ããŒãã®æœåšèœåãæå€§éã«åŒãåºããŠãã ãããçŸä»£ã®Webéçºã®åçãªæ§è³ªã¯é©å¿æ§ãå¿ èŠãšããŠããããããã®æè¡ãçè§£ãå®è£ ããããšã§ãã°ããŒãã«ãªç°å¢ã§ããªãã®ãããžã§ã¯ããéç«ãããããšãã§ããŸãã